Android 接入
本文从使用限制、接入步骤,结合示例代码介绍Android客户端的接入流程。
1. 使用限制
Android SDK使用限制如下:
- 不支持模拟器模式调试。
- 仅支持Android 4.4及以上系统版本的移动智能设备(手机或Pad)接入。
2. 接入步骤.
2.1 前期准备
接入前需要进行权限配置和SDK依赖配置,您可以参考下面的步骤操作。
2.1.1 权限说明
Android SDK中使用的权限已经在SDK包中声明,无需开发者显式声明。
权限内容 | 使用目的 |
android.permission.CAMERA | 使用相机进行人脸识别。 |
android.permission.RECORD_AUDIO | 录制音频,用于适配录制。 |
android.permission.WRITE_EXTERNAL_STORAGE | 视频录制本地保存 |
2.1.2 依赖配置
下载 Android SDK ,改SDK为Android标准AAR包。
下载完毕之后解压,将Android SDK文件夹中的所有aar文件拷贝到主工程模块下的libs目录中(具体以工程实际配置为准),并在模块对应的build.gradle文件中添加如下依赖:
dependencies {
implementation files('libs/eshundasdk-release.aar')
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'com.alibaba:fastjson:1.2.70'
implementation 'com.squareup.okhttp3:okhttp:4.9.1'
implementation 'androidx.core:core:1.7.0'
} |
2.1.3 混淆配置
如果您的工程使用了代码混淆,请务必在App工程的proguard-rules.pro文件中添加如下配置信息,以防止接口被混淆处理后造成功能异常。
-keep class com.eshunda.ldt.** { *; }
-keep class com.eshunda.ldtsdk.** { *; }
-dontwarn com.eshunda.ldt.** |
2.2 调用SDK
前期准备完成后,需要按下面三个动作,完成SDK刷脸活体检测。
初始化 (authInit) 开始认证 (startLivingDetect) 处理认证结果 |
2.2.1 初始化 (authInit)
调用该函数完成SDK内部初始化。请务必做延迟初始化配置,确保在用户同意《隐私权政策》后,在人脸识别业务场景中初始化SDK。
// 认证初始化 InitConfig config = new InitConfig(); config.setLivingType(2); // 设置活体检测类型 sdkManager.authInit(config); |
2.2.2 开始认证
调用该函数拉起SDK刷脸活体检测页面,引导用户完成活体检测。
sdkManager.startLivingDetect(token, DetectCallback) |
2.2.3 处理认证结果
认证结果通过 DetectCallback 方法提供的DetectResult 对象传入
DetectResult 对象包含了诸多属性,结果处理主要关注code(结果编码)和reason(结果原因)即可,常见的编码和原因如下表所示。
错误码 | 是否计费 | 错误码文案 | 错误码描述 |
SUCCESS | 是 | 刷脸成功 | 用户完成了刷脸过程,认证建议结果为通过。 |
EXCEPTION | 否 | 系统错误 | 表示系统错误。 |
CANCEL | 否 | 验证中断 | 表示验证中断。 |
PERMISSION | 否 | 用户拒绝授权 | 用户没有允许摄像头或者麦克风权限 |
TIMEOUT | 否 | 认证超时 | 检测过程中,长时间没有通过检测 |
DetectResult结果示例:
{
"code": "SUCCESS", // 状态码
"msg": "成功", // 状态码描述
"token": "token...", // 传入认证时的token
"data": "data" // 一般是认证结果信息
} |
2.2.4 完整代码示例
// 认证初始化
InitConfig config = new InitConfig();
config.setLivingType(2); // 设置活体检测类型
DetectResult initResult = sdkManager.verifyInit(config);
if (initResult.getCode() == DetectErrorCode.SUCCESS) {
// 初始化成功,开始活体检测
String token = "your_token_from_server"; // 从服务器获取的token
sdkManager.startLivingDetect(token, new DetectCallback() {
@Override
public void onFinish(DetectResult result) {
// 处理检测结果
switch (result.getCode()) {
case SUCCESS:
// 检测成功
String data = result.getData();
break;
case CANCEL:
// 用户取消
break;
case PERMISSION:
// 权限不足
break;
case EXCEPTION:
// 异常
break;
}
}
});
} else {
// 初始化失败
Log.e("SDK", "初始化失败: " + initResult.getMsg());
} |